package org.jeecg.modules.hc.service;

import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.exception.WxPayException;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.hc.entity.HcMerchant;
import org.jeecg.modules.hc.entity.HcMerchantData;
import org.jeecg.modules.hc.entity.HcOrderMerchant;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @Description: 商家订单
 * @Author: jeecg-boot
 * @Date:   2022-12-20
 * @Version: V1.0
 */
public interface IHcOrderMerchantService extends IService<HcOrderMerchant> {

    /**
     * 查询全局端数据
     * @param param
     * @return
     */
    JSONObject queryGlobalData(JSONObject param);

    /**
     * 导入麦克订单
     * @param request
     * @return
     */
    Result<?> importExcelByMaiKe(HttpServletRequest request);

    /**
     * 取消订单
     * @param id
     * @throws WxPayException
     */
    void cancelOrder(String id) throws WxPayException, AlipayApiException;

    /**
     * 根据商家id和参数查询有效订单
     * @param page
     * @param param
     * @return
     */
    IPage<HcOrderMerchant> getOrderListByMerchantId(Page<HcOrderMerchant> page, HcOrderMerchant param);

    /**
     * 获取统计列表
     * @param param
     * @return
     */
    List<Map> getStatisticsList(Map param);

    /**
     * 计划任务 更改所有已付款的订单为已完成
     */
    void orderJob();

    /**
     * 平台端导出订单
     * @param param
     * @return
     */
    ModelAndView platformExportXls(HcOrderMerchant param);

    /**
     * 获取商家统计数据
     * @param merchantId
     * @return
     */
    List<HcMerchantData> getMerchantDataList(String merchantId) throws ParseException;

    /**
     * 商家和全局页面导出
     * @param merchantId
     * @param ids
     * @param type
     * @return
     */
    String exportXls(String merchantId, List<String> ids, String type);

    String exportXlsNew(String merchantId, List<String> ids, String type);

    /**
     * 获取全局页面的订单统计信息
     * @return
     */
    Map getOrderStatisticsOfGlobalPage(String beginTime, String endTime);

    /**
     * 获取全局页面的订单列表
     * @return
     */
    IPage<HcOrderMerchant> getOrderListOfGlobalPage(Page<HcOrderMerchant> page, HcOrderMerchant param);

    /**
     * 获取商户端订单页面的统计信息
     * @param merchantId
     * @return
     */
    HcMerchant getOrderStatistics(String merchantId);

    /**
     * 获取商户端订单页面的订单列表
     * @param page
     * @param merchantId
     * @return
     */
    IPage<HcOrderMerchant> getOrderListByMerchantId(Page<HcOrderMerchant> page, String merchantId);

    /**
     * 设置订单相关信息
     * @param record
     */
    void setInformation(HcOrderMerchant record);

    /**
     * 根据用户id查询订单列表
     * @param page
     * @param param
     * @return
     */
    IPage<HcOrderMerchant> getList(Page<HcOrderMerchant> page, HcOrderMerchant param);

    /**
     * 平台端查询订单列表
     * @param page
     * @param param
     * @return
     */
    IPage<HcOrderMerchant> pageList(Page<HcOrderMerchant> page, HcOrderMerchant param);

    IPage<HcOrderMerchant> getListByAddress(Page<HcOrderMerchant> page, HcOrderMerchant param);

    String platformExportXls2(HcOrderMerchant param);
}
